#pragma once

#include "../DefinesCore.hpp"
#include <string>
#include <vector>

CYBERTRON_BEGIN

class PropertyOwner
{
public:
	PropertyOwner() {};
	virtual ~PropertyOwner() {};

	virtual bool visit(PropertyVisitor* pVisitor) = 0;
};

#define VISIT_PROPERTY(prop) \
	if (!pVisitor->visitProperty(#prop, prop)) { return false; };

#define VISIT_PROPERTY_NAMED(name, prop) \
	if (!pVisitor->visitProperty(name, prop)) { return false; };

CYBERTRON_END
